--[[
    该文件用于加载配置时检查， 做配置 具体功能检测用
    统一返回true or false 返回为false时，功能获取不到配置
    目的：一些必要得检查，同意检查，不用每个玩家都检查一遍
    防止热更时间太久，不允许写耗时逻辑
--]]

local require           = require
local string_format     = string.format
local tostring          = tostring
local next              = next

local log        = require("modules.commhm.log")

local FOO = {}


--! @ 幸运方块配置检查
FOO.check_lucky_block_cfg = function(cfg)
    local item_lib = cfg.item_lib or {}
    local item_buf = cfg.item_buf or {}
    local activity = cfg.activity or {}
    local activity_rewards = cfg.activity_rewards or {}
    if not FOO.check_not_nil("lucky_block", 18,
            cfg.max_watch_ad_times,
            cfg.max_resurrection_times,
            cfg.max_energy,
            cfg.energy_flush_time,
            cfg.monkey_rate,
            cfg.up_monkey_rate,
            cfg.max_monkey_rate,
            cfg.item_lib,
            cfg.max_layer,
            cfg.activity,
            cfg.item_buf,
            cfg.activity_rewards,
            cfg.useitem_resurrection_times,
            cfg.watchad_resurrection_times,
            next(item_lib),
            next(item_buf),
            next(activity),
            next(activity_rewards)
            ) then
        return false
    end
    return true
end


--! @ 检测空函数 args : check_num 为 ... 的个数
FOO.check_not_nil = function(module_name, check_num, ...)
    local args = {...}
    for i=1, (check_num or 0) do
        if not args[i] then
            log.error(string_format("load config check error, module = %s, args[%d] = nil", tostring(module_name), i))
            return false
        end
    end
    return true
end

--累积收益配置检测
FOO.check_accumulate_config = function (cfg)
    if (not cfg.open_window_rate)
    or (not cfg.back_reward_time)
    or (not cfg.accumulate_rewards)
    or (not cfg.red_notify)
    or (not cfg.open_window_notify)
    or (not cfg.delta_list) then 
        return false
    end

    return true
end

--
FOO.check_map = {
    -- 配置表的字段 = 检查函数
    lucky_block = FOO.check_lucky_block_cfg,
    --
    Mode_accumulate = FOO.check_accumulate_config,
}




return FOO